package com.example.demo.entity;

import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.dsl.BooleanExpression;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 工具类
 * Created by malin on 2017/7/8.
 */
public class Inquire {

    //查询条件集合
    private List<BooleanExpression> expressions;

    public Inquire(){
        this.expressions=new ArrayList<>();

    }


    /**
     * 添加查询条件到Query内的查询集合内
     * @param expression
     * @return
     */
    public Inquire addExpression(BooleanExpression expression){
        expressions.add(expression);
        return this;
    }

    /**
     * 构建findall函数使用的predicate查询接口
     * @return
     */
    public Predicate buildQuery(){
        //第一个查询对象
        BooleanExpression be=null;
        //遍历所有条件 从第一个开始想家
        for(int i=0;i<expressions.size();i++){
            if(i==0){
                be=expressions.get(i);
            }else{
                be=be.and(expressions.get(i));
            }
        }
        return be;
    }

    /**
     * 将Iterable集合转换成ArrayList集合
     * @param iterable
     * @param <T>
     * @return
     */
    public <T> List<T> iteratorToList(Iterable<T> iterable){

        List<T> returnList=new ArrayList<>();
        Iterator<T> iterator=iterable.iterator();
        while (iterator.hasNext()){
            returnList.add(iterator.next());
        }
        return returnList;

    }


 }
